package kr.debop4j.data.mongodb.test.loading;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import org.hibernate.ogm.datastore.mongodb.AssociationStorage;
import org.hibernate.ogm.datastore.mongodb.Environment;
import org.hibernate.ogm.datastore.mongodb.impl.MongoDBDatastoreProvider;
import org.hibernate.ogm.datastore.spi.DatastoreProvider;
import org.hibernate.ogm.dialect.mongodb.MongoDBDialect;
import java.util.Set;
import static org.fest.assertions.Assertions.assertThat;
/**
* kr.debop4j.data.mongodb.test.loading.LoadSelectedColumnsInEntityTest
*
* @author 배성혁 ( sunghyouk.bae@gmail.com )
* @since 13. 3. 28
*/
public class LoadSelectedColumnsInEntityTest extends LoadSelectedColumnsCollectionTest {
@Override
protected void configure(org.hibernate.cfg.Configuration cfg) {
super.configure(cfg);
cfg.setProperty(
Environment.MONGODB_ASSOCIATIONS_STORE,
AssociationStorage.IN_ENTITY.toString().toLowerCase()
);
}
@Override
protected void addExtraColumn() {
MongoDBDatastoreProvider provider = (MongoDBDatastoreProvider) super.getService(DatastoreProvider.class);
DB database = provider.getDatabase();
DBCollection collection = database.getCollection("Project");
BasicDBObject query = new BasicDBObject(1);
query.put("_id", "projectID");
BasicDBObject updater = new BasicDBObject(1);
updater.put("$push", new BasicDBObject("extraColumn", 1));
collection.update(query, updater);
}
protected void checkLoading(DBObject associationObject) {
/*
* The only column (except _id) that needs to be retrieved is "modules"
* So we should have 2 columns
*/
final Set<?> retrievedColumns = associationObject.keySet();
assertThat(retrievedColumns).hasSize(2).containsOnly(MongoDBDialect.ID_FIELDNAME, "modules");
}
}